home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1992 H.Ogasawara (COR.) */
- /* MonoGusaLib -> Mglib*/
-
- #include "corlib.h"
- #include <winop.h>
- #include "MgProg.h"
-
- int ScOffx= 0,
- ScOffy= 0;
-
- static
- SCExec( wp, info )
- WindowID wp;
- EventInfo *info;
- {
- MgLibPack *dp;
- if( info->option == EventOpen ){
- WindowSetClientData( wp, 0, __Mg_Dummy );
- WindowSetEventAttr( wp, EventAttrDefault|EventUserON );
- (*__Mg_Dummy->exec)( wp, info );
- return TRUE;
- }
- dp= WindowGetClientPointer( wp );
- switch( info->option ){
- case EventRedraw:
- if( !(*dp->exec)( wp, info ) ){
- DrawBuf dbuf[1];
- DrawSetClear( dbuf, 1 );
- WindowDraw( wp, dbuf, 1 );
- }
- return TRUE;
- case EventUser:
- if( !(*dp->exec)( wp, info ) ){
- char **pp;
- switch( info->ComData ){
- default:
- return FALSE;
- case UserStrings:
- for( pp= info->ComBuffer ; *pp ;)
- __Mg_SendKeyString( wp, info, *pp++ );
- case UserString:
- case UserPaste:
- __Mg_SendKeyString( wp, info, info->ComBuffer );
- }
- }
- return TRUE;
- default:
- return (*dp->exec)( wp, info );
- }
- return FALSE;
- }
-
- static
- DPExec( wp, info )
- WindowID wp;
- EventInfo *info;
- {
- MgLibPack *dp;
- static short resizeflag= FALSE;
- if( info->option == EventOpen ){
- WindowSetClientData( wp, 0, dp= __Mg_Dummy );
- WindowSetEventAttr( wp, EventAttrDefault|EventUserON );
- WindowScrollOpen( ScOffx, ScOffy,
- info->h+ScOffx, info->v+ScOffy,
- wp, dp->maxh, dp->maxv,
- DirectionX|DirectionY, 16, 16, SCExec ),
- dp->zoom.zflag= FALSE;
- WindowRedraw( wp );
- return TRUE;
- }
- dp= WindowGetClientPointer( wp );
- switch( info->option ){
- case EventRedraw:
- if( !resizeflag ){
- DrawBuf dbuf[1];
- int h, v;
- WindowGetViewSize( wp, &h, &v );
- DrawSetLine( dbuf, h-10, v-10, h-1, v-1, 1, OptionFill );
- WindowDraw( wp, dbuf, 1 );
- WindowRedraw( WindowGetChildTop(wp) );
- }
- return TRUE;
- case EventClose:
- if( !(*dp->exec)( wp, info ) ){
- WindowClose( wp );
- WindowConnectionClose();
- }
- free( dp );
- return TRUE;
- case EventIconify:
- if( !(*dp->exec)( wp, info ) )
- IconEnt( wp, (char*)GetTitleAddress(wp), AttrDefault, 12 );
- return TRUE;
- case EventResize:
- if( !(*dp->exec)( wp, info ) ){
- if( info->h > dp->maxh+13 )
- info->h= dp->maxh+13;
- if( info->v > dp->maxv+13 )
- info->v= dp->maxv+13;
- resizeflag= TRUE;
- WindowResize( wp, info->x, info->y, info->h, info->v );
- WindowResize( WindowGetChildTop(wp), ScOffx, ScOffy,
- info->h-ScOffx, info->v-ScOffy );
- resizeflag= FALSE;
- WindowRedraw( wp );
- }
- return TRUE;
- case EventZoom:
- if( !(*dp->exec)( wp, info ) ){
- info->option= EventResize;
- if( dp->zoom.zflag= !dp->zoom.zflag ){
- WindowGetPosition( wp, &dp->zoom.zx, &dp->zoom.zy );
- WindowGetViewSize( wp, &dp->zoom.zh, &dp->zoom.zv );
- WindowSendEvent( wp, info );
- }else{
- info->x= dp->zoom.zx;
- info->y= dp->zoom.zy;
- info->h= dp->zoom.zh;
- info->v= dp->zoom.zv;
- WindowSendEvent( wp, info );
- }
- }
- return TRUE;
- case EventMouseSwitch:
- if( info->LeftON ){
- int h, v;
- WindowGetViewSize( wp, &h, &v );
- if( info->x >= h-10 && info->y >= v-10 ){
- WindowResizeOperation( wp, info );
- return TRUE;
- }
- }
- default:
- return WindowSendEvent( WindowGetChildTop(wp), info );
- }
- return FALSE;
- }
-
- WindowID
- MgWindowScrollOpen( x, y, h, v, title, maxh, maxv, mode, Exec )
- char *title;
- int (*Exec)();
- {
- if( !(__Mg_Dummy= (MgLibPack*)malloc( sizeof( MgLibPack ) )) )
- return NULL;
-
- __Mg_Dummy->exec= Exec;
- __Mg_Dummy->attr= (mode>>8) & WindowAttrGraphicUse;
- __Mg_Dummy->maxh= maxh;
- __Mg_Dummy->maxv= maxv;
- return WindowTitleOpen( x, y, h, v, NULL, title,
- Resize|Close|Push|(mode&MgTitleItem), DPExec );
- }
-
- WindowID
- MgWindowScrollOpenArgs( x, y, h, v, title, argc, argv, maxh, maxv, mode, Exec )
- char *title, **argv;
- int (*Exec)();
- {
- if( mode & MgSwitchHV)
- AnalyzeArgs( argc, argv, &x, &y, &h, &v );
- else
- AnalyzeArgs( argc, argv, &x, &y, NULL, NULL );
- return MgWindowScrollOpen( x, y, h, v, title, maxh, maxv, mode, Exec );
- }
-
-